Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / frontend / js / pwa / swClientRegister.js

Displaying Raw • Download


meshchatx/src/frontend/js/pwa/swClientRegister.js HEAD (2bf00cb3) Text, 2.59 KB

T8b949e// SPDX-License-Identifier: 0BSD

T8b949e/**
* Client-side service worker registration helpers (browser only, not Electron).
*/

T8b949e/**
* Reload only when replacing an existing controller, and only once per page life.
* @param {{ hadController: boolean, refreshing: boolean }} state
* @returns {{ shouldReload: boolean, nextRefreshing: boolean }}
*/
Tff7b72export Tff7b72function Te6edf3decideControllerChangeReloadTb4b4b4(Te6edf3stateTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3hadController Tff7b72= Tffa657BooleanTb4b4b4(Te6edf3stateTff7b72?Tb4b4b4.Te6edf3hadControllerTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3refreshing Tff7b72= Tffa657BooleanTb4b4b4(Te6edf3stateTff7b72?Tb4b4b4.Te6edf3refreshingTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hadController Tff7b72|| Te6edf3refreshingTb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{ Te6edf3shouldReloadTff7b72: Tff7b72falseTb4b4b4, Te6edf3nextRefreshingTff7b72: Te6edf3refreshing Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72return Tb4b4b4{ Te6edf3shouldReloadTff7b72: Tff7b72trueTb4b4b4, Te6edf3nextRefreshingTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4;
Tb4b4b4}

T8b949e/**
* @param {unknown} error
* @returns {boolean}
*/
Tff7b72export Tff7b72function Te6edf3isIgnorableServiceWorkerRegistrationErrorTb4b4b4(Te6edf3errorTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3errorMessage Tff7b72= Te6edf3error Tff7b72&& Tff7b72typeof Te6edf3error Tff7b72=== Ta5d6ff"object" Tff7b72&& Ta5d6ff"message" Tff7b72in Te6edf3error Tff7b72? Tffa657StringTb4b4b4(Te6edf3errorTb4b4b4.Te6edf3message Tff7b72|| Ta5d6ff""Tb4b4b4) Tff7b72: Ta5d6ff""Tb4b4b4;
Tff7b72const Te6edf3errorName Tff7b72= Te6edf3error Tff7b72&& Tff7b72typeof Te6edf3error Tff7b72=== Ta5d6ff"object" Tff7b72&& Ta5d6ff"name" Tff7b72in Te6edf3error Tff7b72? Tffa657StringTb4b4b4(Te6edf3errorTb4b4b4.Te6edf3name Tff7b72|| Ta5d6ff""Tb4b4b4) Tff7b72: Ta5d6ff""Tb4b4b4;
Tff7b72return Tb4b4b4(
Te6edf3errorName Tff7b72=== Ta5d6ff"SecurityError" Tff7b72||
Te6edf3errorMessageTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"SSL certificate"Tb4b4b4) Tff7b72||
Te6edf3errorMessageTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"certificate"Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e/**
* Registration options that keep SW script discovery fresh.
* @returns {{ updateViaCache: "none" }}
*/
Tff7b72export Tff7b72function Te6edf3serviceWorkerRegisterOptionsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{ Te6edf3updateViaCacheTff7b72: Ta5d6ff"none" Tb4b4b4}Tb4b4b4;
Tb4b4b4}

T8b949e/**
* Vite HMR and Vue DevTools break if a leftover PWA worker intercepts modules.
* Register only for production-like browser loads (not Electron, not Vite DEV).
*
* @param {{ isDev?: boolean, isElectron?: boolean }} state
* @returns {boolean}
*/
Tff7b72export Tff7b72function Te6edf3shouldRegisterServiceWorkerTb4b4b4(Te6edf3stateTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72!Te6edf3stateTff7b72?Tb4b4b4.Te6edf3isDev Tff7b72&& Tff7b72!Te6edf3stateTff7b72?Tb4b4b4.Te6edf3isElectronTb4b4b4;
Tb4b4b4}

T8b949e/**
* Drop existing registrations so a previous task run session cannot cache Vite.
*
* @param {{ getRegistrations?: () => Promise<Array<{ unregister?: () => Promise<boolean> }>> }} [serviceWorker]
* @returns {Promise<boolean[]>}
*/
Tff7b72export Tff7b72async Tff7b72function Te6edf3unregisterServiceWorkersIfPresentTb4b4b4(Te6edf3serviceWorkerTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3serviceWorker Tff7b72|| Tff7b72typeof Te6edf3serviceWorkerTb4b4b4.Te6edf3getRegistrations Tff7b72!== Ta5d6ff"function"Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3registrations Tff7b72= Tff7b72await Te6edf3serviceWorkerTb4b4b4.Te6edf3getRegistrationsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tffa657ArrayTb4b4b4.Te6edf3isArrayTb4b4b4(Te6edf3registrationsTb4b4b4) Tff7b72|| Te6edf3registrationsTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3results Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3registration Tff7b72of Te6edf3registrationsTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3registration Tff7b72&& Tff7b72typeof Te6edf3registrationTb4b4b4.Te6edf3unregister Tff7b72=== Ta5d6ff"function"Tb4b4b4) Tb4b4b4{
Te6edf3resultsTb4b4b4.Te6edf3pushTb4b4b4(Tffa657BooleanTb4b4b4(Tff7b72await Te6edf3registrationTb4b4b4.Te6edf3unregisterTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72return Te6edf3resultsTb4b4b4;
Tb4b4b4}


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────